package cn.mugutu.finance.service.system;

import cn.mugutu.finance.domain.system.Menu;
import cn.mugutu.finance.domain.system.Resource;
import cn.mugutu.finance.domain.system.User;
import cn.mugutu.finance.dto.BaseResult;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 系统菜单服务
 */
public interface MenuService extends BaseService<Menu> {

    /**
     * 查询当前用户所拥有的一级菜单和一级菜单下面的二级菜单
     * @param user 登陆用户
     */
    List<Menu> findAllMenus(User user);

    /**
     * 根据uri查询对应的菜单
     * @param uri
     * @return
     */
    Resource findByUri(String uri);

    /**
     * 保存或更新菜单
     * @param menu
     * @return
     */
    BaseResult saveOrUpdateMenu(Menu menu);

    /**
     * 判断一个菜单是不是一级菜单
     * @param id
     * @return
     */
    boolean judgeMenuIsOneLevelMenu(Long id);

    /**
     * 查询所有一级菜单
     * @return
     */
    List<Menu> findAllOneLeveMenu();

    /**
     * 查询系统所有二级菜单
     * @return
     */
    List<Menu> findAllSecondLeveMenu();

    /**
     * 菜单修改(只能修改图标/名字,其他都是由系统初始化)
     * @param menu
     * @return
     */
    BaseResult updateMenu(Menu menu, User user, HttpSession session);

}
